package com.monkey.springbootvue.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

// 使用@Configuration注解表明这个类是一个配置类，Spring框架会在启动时自动扫描并加载它，用于配置应用程序的相关设置
@Configuration
public class CrosConfig implements WebMvcConfigurer {

    // 重写WebMvcConfigurer接口中的addCorsMappings方法，用于配置跨域资源共享（CORS）相关的规则
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        // 对所有路径（"**"表示任意路径）启用跨域配置
        registry.addMapping("/**")
                // 设置允许所有来源的请求访问，"*"是通配符，表示任意来源。在实际生产环境中，出于安全考虑，通常应该指定具体的合法域名列表
                .allowedOrigins("*")
                // 允许的HTTP请求方法，这里列出了常见的几种，包括GET（获取资源）、HEAD（获取头部信息）、POST（提交数据）、PUT（更新资源）、DELETE（删除资源）、OPTIONS（预检请求等）
                .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
                // 设置是否允许携带凭证（比如Cookie等），true表示允许，在涉及需要验证用户身份等场景且跨域时可能会用到
                .allowCredentials(true)
                // 设置预检请求（OPTIONS请求）的缓存时间，单位是秒，这里设置为3600秒（1小时），在这个时间内，相同的跨域请求不需要再次发送预检请求，提高性能
                .maxAge(3600)
                // 允许所有的请求头，同样在实际应用中，出于安全考虑，可能需要明确指定允许的请求头列表，而不是使用通配符"*"
                .allowedHeaders("*");
    }
}